#include "stm32f10x.h" // Device header
#include "MyI2C.h"
#include "WF183_Reg.h"

// 向寄存器写入数据 RegAddress寄存器地址 Data发送的数据
void WF183_ReadP(void)
{
    u8 P_Data[4];
    u16 ucErrTime = 0;
    MyI2C_Start();
    MyI2C_SendByte(WF183DE_DEVICE_ADDR); // 连接从机地址
    MyI2C_ReceiveAsk();                  // 接收从机应答，自行处理，这里不处理了
    MyI2C_SendByte(REG_CONTORL);         // 向指定寄存器发送数据 （还没发送）
    MyI2C_ReceiveAsk();
    MyI2C_SendByte(CMD_CONVERT_P); // 向从机发送数据
    MyI2C_ReceiveAsk();
    ucErrTime = 0;
    MyI2C_W_SCL(1);
    while (!GPIO_ReadInputDataBit(GPIOB, SCL_PIN))
    {
        ucErrTime++;
        if (ucErrTime > 250) // 根据时钟选择合适的等待时间
        {
            // 加入合适的错误处理机制
            //  IIC_Stop();
            // return 1;
            break;
        }
    }
    MyI2C_Stop();

    // Delay_ms(500);

    MyI2C_Start();
    MyI2C_SendByte(WF183DE_DEVICE_ADDR); // 连接从机地址
    MyI2C_ReceiveAsk();                  // 接收从机应答，自行处理，这里不处理了
    MyI2C_SendByte(REG_PRESS_D0);        // 向指定寄存器发送数据 （还没发送）
    MyI2C_ReceiveAsk();
    MyI2C_Stop();

    Delay_ms(500);

    MyI2C_Start();
    MyI2C_SendByte(WF183DE_DEVICE_ADDR | 0x01); // 向从机发送数据
    MyI2C_ReceiveAsk();
    P_Data[0] = MyI2C_ReceiveByte();
    MyI2C_SendAsk(0);
    P_Data[1] = MyI2C_ReceiveByte();
    MyI2C_SendAsk(0);
    P_Data[2] = MyI2C_ReceiveByte();
    MyI2C_SendAsk(0);
    P_Data[3] = MyI2C_ReceiveByte();
    MyI2C_SendAsk(1);
    MyI2C_Stop();
}
void WF183_ReadT(void)
{
    u8 T_Data[4];
    u16 ucErrTime = 0;
    MyI2C_Start();
    MyI2C_SendByte(WF183DE_DEVICE_ADDR); // 连接从机地址
    MyI2C_ReceiveAsk();                  // 接收从机应答，自行处理，这里不处理了
    MyI2C_SendByte(REG_CONTORL);         // 向指定寄存器发送数据 （还没发送）
    MyI2C_ReceiveAsk();
    MyI2C_SendByte(CMD_CONVERT_T); // 向从机发送数据
    MyI2C_ReceiveAsk();
    ucErrTime = 0;
    MyI2C_W_SCL(1);
    while (!GPIO_ReadInputDataBit(GPIOB, SCL_PIN))
    {
        ucErrTime++;
        if (ucErrTime > 250) // 根据时钟选择合适的等待时间
        {
            // 加入合适的错误处理机制
            //  IIC_Stop();
            // return 1;
            break;
        }
    }
    MyI2C_Stop();

    // Delay_ms(500);

    MyI2C_Start();
    MyI2C_SendByte(WF183DE_DEVICE_ADDR); // 连接从机地址
    MyI2C_ReceiveAsk();                  // 接收从机应答，自行处理，这里不处理了
    MyI2C_SendByte(REG_TEMPERATURE_D0);  // 向指定寄存器发送数据 （还没发送）
    MyI2C_ReceiveAsk();
    MyI2C_Stop();

    Delay_ms(500);

    MyI2C_Start();
    MyI2C_SendByte(WF183DE_DEVICE_ADDR | 0x01); // 向从机发送数据
    MyI2C_ReceiveAsk();
    T_Data[0] = MyI2C_ReceiveByte();
    MyI2C_SendAsk(0);
    T_Data[1] = MyI2C_ReceiveByte();
    // MyI2C_SendAsk(0);
    // P_Data[2] = MyI2C_ReceiveByte();
    // MyI2C_SendAsk(0);
    // P_Data[3] = MyI2C_ReceiveByte();
    MyI2C_SendAsk(1);
    MyI2C_Stop();
}

void WF183_Init(void)
{
    MyI2C_Init();
}
